package controle;

import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;
import javax.servlet.*;
import javax.servlet.http.*;
import modelo.Exercicio;
import modelo.Receita;
import persistencia.DespesasDAO;
import persistencia.ExercicioDAO;
import persistencia.ReceitaDAO;

/**
 *
 * @author aldiene
 */
public class ServletReceita extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");

        String acao = request.getParameter("acao");

        if (acao.equals("salvar")) {
            salvar(request, response);

        } else if (acao.equals("excluir")) {
            excluir(request, response);

        } else if (acao.equals("listar")) {//lista 

            listar(request, response);

        } else if (acao.equals("recupera")) {//recupera para alterar

            getRecuperar(request, response);

        } else if (acao.equals("alterar")) {//editar

            alterar(request, response);

            String descricao = request.getParameter("descricao");
            String valor = request.getParameter("valor");
            String data = request.getParameter("data");
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    //METODO SALVA DADOS NO BANCO DE DADOS
    protected void salvar(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession session = request.getSession(true);

        String descricao = request.getParameter("descricao");
        String pvalor = request.getParameter("valor");
        String pdata = request.getParameter("data");
        String pExec = request.getParameter("exercicio");

        SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
        java.util.Date data = null;
        try {
            data = new java.util.Date(format.parse(pdata).getTime());
        } catch (ParseException e) {
            System.err.print(e);
        }
        float valor = Float.parseFloat(pvalor);

        Receita receita = new Receita(descricao, valor, data);

        Exercicio exec = ExercicioDAO.getExercicio(Integer.parseInt(pExec));

        receita.setExercicio(exec);


        // ReceitaDAO dao = new ReceitaDAO();
        if (ReceitaDAO.salvar(receita)) {
            System.out.print("Servlet: cadastrado com sucess");
            getServletContext().getRequestDispatcher("/CadastrarReceitas.jsp").forward(request, response);
        } else {
            System.out.print("Servlet: erro ao cadastrar receita");
        }
    }

    //METODO PARA LISTAR AS RECEITAS
    protected void listar(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        HttpSession session = request.getSession(true);

        ReceitaDAO a = new ReceitaDAO();
        Vector receitas = a.getReceitas();
        request.setAttribute("receitas", receitas);
        getServletContext().getRequestDispatcher("/ListarExcluirReceitas.jsp").forward(request, response);
    }
    //METODO PARA ALTERAR RECEITA

    protected void getRecuperar(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession(true);

        try {
            ReceitaDAO a = new ReceitaDAO();

            int id = Integer.parseInt(request.getParameter("ID_RECEITA"));
            Receita rec = a.getRecuperar(id);
            session.setAttribute("receita", rec);

            getServletContext().getRequestDispatcher("/AlterarReceita.jsp").forward(request, response);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //METODO PARA ALTERAÇÃO DOS ATRIBUTOS DA RECEITA
    protected void alterar(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession session = request.getSession(true);

        try {
            int id = Integer.parseInt(request.getParameter("id_receita"));
            String descricao = request.getParameter("descricao");
            String pvalor = request.getParameter("valor");
            String pdata = request.getParameter("data");

            float valor = Float.parseFloat(pvalor);
            Date data = new Date(pdata);
            Receita receita = new Receita(descricao, valor, data);
            receita.setId(id);
            ReceitaDAO rec = new ReceitaDAO();
            rec.alterar(receita);

            session.setAttribute("receita", rec);
            getServletContext().getRequestDispatcher("/AlterarReceitas.jsp").forward(request, response);

        } catch (Exception ex) {
            ex.printStackTrace();
        }

    }

    protected void excluir(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession session = request.getSession(true);

        int id_receita = Integer.parseInt(request.getParameter("id_receita"));
        ReceitaDAO dao = new ReceitaDAO();
        dao.excluir(id_receita);
        getServletContext().getRequestDispatcher("/ServletReceita?acao=listar").forward(request, response);


    }
}
